import java.lang.reflect.Array;
import java.util.Arrays;

public class test {
//    8.存在连续三个奇数的数组
    public static boolean array(int []nums){
        int count=0;
        for(int i=0;i<nums.length;i++){
            if (nums[i]%2!=0){
                count++;
                if(count==3){
                    return true;
                }
            }else{
                count=0;
            }
        }
        return false;
    }
    public static void main(String[] args) {
        int []array1 = {2,6,4,1};
        int []array2 = {1,2,34,3,4,5,7,23,12};
        System.out.println(array(array1));
        System.out.println(array(array2));
    }
//    7.多数元素
    public static int majorityElement(int[] nums) {
        Arrays.sort(nums);
        return nums[nums.length/2];
    }
    public static void main7(String[] args) {
        int []nums={2,2,1,1,1,2,2};
        System.out.println(majorityElement(nums));
    }
//    6.只出现一次的数字
        public static int oncenum(int []nums){
            int ret=0;
            for (int i=0;i<nums.length;i++){
                ret^=nums[i];
            }
            return ret;
        }
        public static void main6(String[] args) {
            int []nums={4,1,2,1,2};
            System.out.println(oncenum(nums));

        }
//    5.给定一个整数数组 nums 和一个整数目标值 target，请你在该数组中找出 和为目标值 target 的那 两个 整数，并返回它们的数组下标。
    public static int []twosum (int []nums,int target){
        int []result=new int[2];
        for (int i=0;i< nums.length;i++){
            for(int j= nums.length-1;j>i;j--){
                if(nums[i]+nums[j]==target){
                    result[0]=i;
                    result[1]=j;
                }
            }
        }
        return result;
    }
    public static void main5(String[] args) {
        int []num={2,7,11,15};
        System.out.println(Arrays.toString(twosum(num,17)));
    }
//    4.奇数位于偶数之前
//    调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
//    如数组：[1,2,3,4,5,6]
//    调整后可能是：[1, 5, 3, 4, 2, 6]
    public static int[]arr(int []array){

        int j=array.length-1;
        int i=0;
        while(i<j){
            while(i<j && array[i]%2!=0){
                i++;
            }
            while(i<j && array[i]%2==0){
                int tmp=array[j];
                array[j]=array[i];
                array[i]=tmp;
                j--;
            }



        }
        return array;
    }
    public static void main4(String[] args) {
        int []array={1,2,3,4,5,6};


        arr(array);
        for(int i=0;i< array.length;i++){
            System.out.println(array[i]);
        }

    }
//    3.数组所有元素之和  实现一个方法 sum, 以数组为参数, 求数组所有元素之和.
    public static int sum(int []array){
        int count=0;
        for(int i=0;i< array.length;i++){
            count+=array[i];
        }
        return count;
    }
    public static void main3(String[] args) {
        int []array={1,2,3,4,5,6};
        System.out.println(sum(array));
    }
//2.改变原有数组元素的值
//实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 , 并设置到对应的数组元素上.
// 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}
    public static void transform(int[] arr) {
        for (int i = 0; i < arr.length; i++) {
            arr[i] *= 2;
        }
    }
    public static void main2(String[] args) {
        int []arr={1,2,3};
        transform(arr);
        for (int num:arr) {
            System.out.print(num+" ");
        }
    }
//    1.创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100
    public static void main1(String[] args) {
        int []arr=new int [100];
        for(int i=0;i<arr.length;i++){
            arr[i]=i+1;
            System.out.println(arr[i]);
        }

    }
}
